"""
一、什么是websocket?
WS是一种协议，设计用于提供低延时、全双工和长期运行的链接。
可以说WS的出现就是为了解决实时通信问题。

二、什么是实时通信？
传统通信：电子邮件、网页浏览，存在延迟，需要用户主动请求来获取更新数据
实时通信：即时消息传递、音视频通话、在线会议和实时数据传输等，
可以实现即时的数据传输和交流，不需要用户主动请求或刷新来获取更新数据

三、如何实现实时通信？
方法一：轮询 = 客户端定期向服务器发送请求
方法二：长轮询 = 在客户端发送请求后，保存链接打开，等待新数据响应后再关闭连接
方法三：Comet = 保持长连接，在返回请求后继续保持连接打开
方法四：WebSocket

四、WebSocket的优势
1、双向实时通信
允许在单个、长时间的连接上进行双向实时通信。在需要快速实时更新的应用程序里，比HTTP更加高效。
2、降低延迟
链接一旦建立便会保持开放，数据可以在客户端和服务器之间以比 HTTP 更低的延迟进行传输
3、更高效的资源利用
可以减少重复请求和响应的开销，因为它的连接只需要建立一次

五、什么是心跳机制
心跳机制是一种特殊的数据包。不包含任何实际数据，仅用来维持连接状态
一个空数据定期发送，确保链接仍然有效，避免长时间没有数据传输而被中断
如果一段时间内没有收到对方的心跳包，就可以认为连接已经断开
"""
import websocket

# 连接WebSocket服务器
# 第一步：实例化ws
ws = websocket.WebSocket()
# 第二步：调用connect方法请求对应的ws地址
ws.connect("wss://tx-bj-live-comet-05.chat.bilibili.com/sub")

# 发送ws请求
ws.send(b'0000001f0010000100000002000000015b6f626a656374204f626a6563745d')

# 接收服务器返回的消息
result = ws.recv()
print(result)

# 关闭连接
ws.close()
